home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / basappl9.arc / STOKTRAK.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-29  |  19.4 KB  |  446 lines

  1. 10  CLEAR,,1200
  2. 20  DIM TIK$(100):DIM NAM$(100):DIM BUY(100) :DIM CURPR(100) : DIM SALESH(100) :DIM EPS(100): DIM NUMSH(100):DIM BVSH(100):DIM TEMPCURPR(100)
  3. 30  DIM O1(100) :DIM O2(100) : DIM O3(100) :DIM O4(100)
  4. 40  DIM W1(100):DIM W2(100):DIM W3(100):DIM W4(100):DIM W5(100):DIM PEAVG(100)
  5. 50  DIM W6(100):DIM W7(100):DIM W8(100):DIM W9(100):DIM WA(100):DIM MOVAVG(100)
  6. 60  DIM V1(100):DIM V2(100):DIM V3(100):DIM V4(100):DIM TEMPCURVOL(100):DIM CURVOL(100):DIM VOLAVG(100):DIM PERATIO(100)
  7. 70  DIM TIMELY(100):DIM SAFE(100):DIM YEARHI(100):DIM YEARLO(100)
  8. 80  DIM COUNT1(100):DIM BUYCOM(100):DIM SELCOM(100):DIM BRKEVEN(100):DIM DIVSH(100):DIM TOTCOM(100):DIM PCTCHG(100)
  9. 90  CLOSE:KEY OFF:CLS:COLOR 7,0
  10. 100  LOCATE 3,61:PRINT"tm":LOCATE 4,16:PRINT STRING$(15,205)" H o m e  M a d e "STRING$(15,205)
  11. 110  LOCATE 7,29:PRINT"User Produced Software":PRINT TAB(29) STRING$(22,196):PRINT
  12. 120  LOCATE 9,32:COLOR 0,5:PRINT"<UNK! {FEFE}> StockTrack <UNK! {FEFE}>":COLOR 7,0
  13. 130  LOCATE 13,31:PRINT"901 West Pine #17B"
  14. 140  LOCATE 14,29:PRINT"Hattiesburg, MS  39401"
  15. 150  LOCATE 17,13:PRINT"If you use and value StockTrack a nominal contribution"
  16. 160  LOCATE 18,18:PRINT"($35 is suggested) would be much appreciated."
  17. 170  LOCATE 20,8:PRINT STRING$(64,205):LOCATE 21,33:PRINT"Copyright (c) 1984 Frederick Barthelme
  18. 180  LOCATE 20,35:PRINT" Rev: 2.8 "
  19. 190  '============================  SET THE DATE & TIME  ========================
  20. 200  IF RIGHT$(DATE$,2)="84" THEN 300
  21. 210  LOCATE 25,61:PRINT DATE$;" ";TIME$
  22. 220  LOCATE 25,61:PRINT "  ":LOCATE 25,61:INPUT "",X$
  23. 230  IF X$ = "" THEN 300
  24. 240  LOCATE 25,64:PRINT "  ":LOCATE 25,64:INPUT "",Y$
  25. 250  DATE$ = X$+"-"+Y$+"-84"
  26. 260  LOCATE 25,72:PRINT "  ":LOCATE 25,72:INPUT "",Z$
  27. 270  IF Z$ = "" THEN 300
  28. 280  LOCATE 25,75:PRINT "  ":LOCATE 25,75:INPUT "",W$
  29. 290  TIME$ = Z$+":"+W$
  30. 300  '======================  MAIN MENU  =======================================
  31. 310  LOCATE 25,1:PRINT "Load Save Return Modem ChgDate Basic Quit                   ";DATE$;" ";TIME$
  32. 320  X$ = INKEY$
  33. 330  IF X$ = "" THEN 310
  34. 340  IF X$ <> "q" AND X$ <> "Q" THEN 380
  35. 350  IF X$ = "q" OR X$ = "Q" THEN LOCATE 25,45:PRINT "Are you sure?":Q$=INKEY$
  36. 360  IF Q$ = "" THEN 350
  37. 370  IF Q$ = "y" OR Q$ = "Y" THEN SYSTEM
  38. 380  IF X$= "l" OR X$ = "L" THEN GOSUB 460
  39. 385  IF X$ ="s" OR X$ = "S" THEN GOSUB 1030
  40. 390  IF X$= "r" OR X$ = "R" THEN 490
  41. 400  IF X$= "c" OR X$ = "C" THEN GOSUB 220
  42. 420  IF X$= "B" OR X$ = "b" THEN CLS:GOSUB 3350:KEY ON:END
  43. 430  IF X$= "m" OR X$ = "M" THEN RUN"pc-talk
  44. 440  GOTO 310
  45. 450  IF TC = 0 THEN 590
  46. 460  '=========================== MAIN DISPLAY ==============================
  47. 470  KEY OFF:COLOR 7,0
  48. 480  GOTO 780
  49. 490  CLS:LOCATE 1,1:PRINT "Tick  T  Buy   Cur   Chg    V00 PSR  PE P/BV EYld DYld %Ch Com  Brk= %Por   Net "
  50. 500                 PRINT "-----|-|-----|-----|-----|-----|----|--|----|----|----|---|---|-----|-----|-----"
  51. 510  FOR I = 1 TO M:PO = I+2:TA=0:TB=0
  52. 520  K = COUNT1(I)
  53. 530  GOSUB 2260:NEXT I
  54. 540  IF TC = 0 THEN 590
  55. 550  FOR I = 1 TO M:K = COUNT1(I):LOCATE I+2,69:PRINT USING " ###";((CURPR(K)*NUMSH(K))/TT)*100:NEXT I:M = 0
  56. 560  PRINT:PRINT USING "    Cost: #####.##";TC:PRINT USING " Cur Val: #####.##";TT;:LOCATE ,40:PRINT "Portfolio: ";RK$;"  ";DT$:PRINT USING " Comissn: #####.##";MC:PRINT USING " Net Val: #####.##";TT-MC:PRINT USING " Net Chg: #####.##";TT-(MC+TC)
  57. 570  PC = (((TT-MC)/TC)*100)-100
  58. 580  PRINT USING " Pct Chg: #####.##";PC;:PRINT"%"
  59. 590  TT=0:TC=0:MC=0
  60. 600  GOSUB 4080:LOCATE 25,1:PRINT "Add Chg LPrint Week Individual NewDat Port Selection Mkt Files Quit "
  61. 610  X$=INKEY$
  62. 620  IF X$="" THEN 610
  63. 640  IF X$ = "f" OR X$ = "F" THEN CLS:FILES:GOTO 600
  64. 660  IF X$ = "p" OR X$ = "P" THEN 2200
  65. 662  IF X$ = "m" OR X$ = "M" THEN GOSUB 3970
  66. 665  IF X$ = "l" OR X$ = "L" THEN GOSUB 3450
  67. 670  IF X$ = "a" OR X$="A" THEN I=NU+1:NU=NU+1:CLS:GOTO 3140
  68. 690  IF X$ = "c" OR X$ = "C" THEN GOSUB 2820
  69. 700  IF X$ = "w" OR X$ = "W" THEN 1180
  70. 710  IF X$ = "z" OR X$ = "Z" THEN 3450
  71. 720  IF X$ = "n" OR X$ = "N" THEN 910
  72. 740  IF X$ ="s" OR X$ = "S" THEN 2070
  73. 750  IF X$ ="q" OR X$ = "Q" THEN 90
  74. 760  IF X$ ="i" OR X$ = "I" THEN 1230
  75. 770  GOTO 600
  76. 780  '================================ I/O OPERATIONS =====================
  77. 790  GOSUB 4080:PRINT "Portfolio NewPort Files Quit "
  78. 794  RN$=INKEY$:IF RN$ = "" THEN 794
  79. 796  IF RN$ = "p" OR RN$="P" THEN RK$ = "stoktrak":GOTO 830
  80. 800  IF RN$="q" OR RN$ = "Q" THEN RETURN
  81. 810  IF RN$ = "f" OR RN$="F" THEN CLS:FILES:GOTO 790
  82. 815  IF RN$ = "n" OR RN$="N" THEN GOSUB 4080:INPUT "New portfolio name.  RTN aborts: ",RN$: IF RN$ <> "" THEN 820
  83. 817  GOTO 790
  84. 820  RK$ = RN$
  85. 830  OPEN RK$+".NUM" FOR INPUT AS #2:INPUT #2,NU,DT$:CLOSE
  86. 840  OPEN RK$+".POR" FOR INPUT AS # 1
  87. 850  'IF EOF(1) THEN 890
  88. 860  FOR A = 1 TO NU
  89. 870  INPUT #1,TIK$(A),NAM$( A),BUY(A),CURPR(A),SALESH(A),EPS(A),NUMSH(A),BVSH(A),O1(A)
  90. 880  INPUT #1,O2(A),O3(A),O4(A),W1(A),W2(A),W3(A),W4(A),W5(A),W6(A),W7(A),W8(A),W9(A),WA(A),V1(A),V2(A),V3(A),V4(A),CURVOL(A),TIMELY(A),SAFE(A),YEARHI(A),YEARLO(A),DIVSH(A),PEAVG(A)
  91. 890  NEXT A
  92. 892  OPEN RK$+".mkt" FOR INPUT AS #3:FOR I = 1 TO 10:INPUT #3,HISTDAT$(I),DOW(I),VOL(I),UPS(I),DNS(I),HI(I),LO(I),BLK(I):NEXT I:CLOSE
  93. 900  CLOSE: GOTO 600
  94. 910  '========================== NEW FIGURES ==============================
  95. 920  GOSUB 4080:INPUT "NewData file.  RTN aborts: ";Q$
  96. 930  IF Q$ ="" THEN 1020
  97. 940  ON ERROR GOTO 90
  98. 950  OPEN RK$+".NUM" FOR INPUT AS #2:INPUT #2,NU,DT$:CLOSE
  99. 960  OPEN Q$ FOR INPUT AS # 3
  100. 970  FOR I=1 TO NU:INPUT #3,TIK$(I),TEMPCURVOL(I),TEMPCURPR(I)
  101. 980  O1(I)=O2(I):O2(I)=O3(I):O3(I)=O4(I):O4(I)=CURPR(I):V1(I)=V2(I):V2(I)=V3(I):V3(I)=V4(I):V4(I)=CURVOL(I)
  102. 990  CURPR(I)=TEMPCURPR(I):CURVOL(I)=TEMPCURVOL(I)
  103. 1000  NEXT I
  104. 1020  GOTO 490
  105. 1030  '========================== OUTPUT ===================================
  106. 1035  IF RK$="" THEN X$="n":GOSUB 4080:GOTO 1070
  107. 1040  GOSUB 4080:PRINT "Save as ";RK$;" (Y/N): "
  108. 1050   X$=INKEY$:IF X$="" THEN 1050
  109. 1060  DT$=DATE$+" "+TIME$
  110. 1069  IF X$ = "y" OR  X$ ="Y" THEN 1100
  111. 1070  LOCATE 25,1:INPUT "Enter new name.  RTN aborts: ",RN$
  112. 1090  IF RN$="" THEN 1170
  113. 1095  RK$=RN$
  114. 1100  OPEN RK$+".POR" FOR OUTPUT AS # 1
  115. 1110  FOR A = 1 TO NU
  116. 1120  WRITE #1,TIK$(A),NAM$( A),BUY(A),CURPR(A),SALESH(A),EPS(A),NUMSH(A),BVSH(A),O1(A)
  117. 1130  WRITE #1,O2(A),O3(A),O4(A),W1(A),W2(A),W3(A),W4(A),W5(A),W6(A),W7(A),W8(A),W9(A),WA(A),V1(A),V2(A),V3(A),V4(A),CURVOL(A),TIMELY(A),SAFE(A),YEARHI(A),YEARLO(A),DIVSH(A),PEAVG(A)
  118. 1140  NEXT A
  119. 1150  OPEN RK$+".NUM" FOR OUTPUT AS #2:WRITE #2,NU,DT$:CLOSE
  120. 1160  OPEN RK$+".MKT" FOR OUTPUT AS #3:FOR I = 1 TO 10:WRITE #3,HISTDAT$(I),DOW(I),VOL(I),UPS(I),DNS(I),HI(I),LO(I),BLK(I):NEXT I:CLOSE
  121. 1170  RETURN
  122. 1180  '============================ SAVE THE WEEK PRICE =======================
  123. 1190  FOR I = 1 TO NU:W1(I)=W2(I):W2(I)=W3(I):W3(I)=W4(I):W4(I)=W5(I):W5(I)=W6(I):W6(I)=W7(I):W7(I)=W8(I):W8(I)=W9(I):W9(I)=WA(I):WA(I)=CURPR(I):NEXT I
  124. 1200  LOCATE 25,68:COLOR 14,0:PRINT "Set. [RTN]"
  125. 1210  COLOR 7,0
  126. 1220  GOTO 600
  127. 1230  '====================== 1 STOCK, 1 PAGE DISPLAY ==========================
  128. 1240  FOR I = 1 TO NU
  129. 1250  CLS:LOCATE 25,1
  130. 1260  PRINT "Number Last Next Tickers Quit   ";I;"OF";NU;"Stocks."
  131. 1270  LOCATE 1,1:PRINT NAM$(I)
  132. 1280  LOCATE 1,25:PRINT TIK$(I)
  133. 1290  LOCATE 1,32:PRINT NUMSH(I);" Shs @ ";BUY(I)
  134. 1300  LOCATE 1,55:PRINT "Cost: ";BUY(I)*NUMSH(I)
  135. 1310  IF MOVAVG(I) < CURPR(I) THEN COLOR 0,4:LOCATE 1,25:PRINT TIK$(I);"=":COLOR 7,0
  136. 1320  PRINT
  137. 1330  PRINT USING "Current:  #####.##";CURPR(I)
  138. 1340  PRINT USING "  Value:  #####.##";CURPR(I)*NUMSH(I)
  139. 1350  PRINT USING " Change:  #####.##";CURPR(I)-BUY(I)
  140. 1360  PRINT USING "Percent:  #####.##";((CURPR(I)/BUY(I))*100)-100
  141. 1370  PRINT USING "Tot Chg:  #####.##";(CURPR(I)*NUMSH(I))-(BUY(I)*NUMSH(I))
  142. 1380  LOCATE 3,25:PRINT "Volume 4 days: ";:PRINT USING "#####00";V1(I);V2(I);V3(I);V4(I)
  143. 1390  LOCATE ,25:PRINT "Close  4 days: ";:PRINT USING " ###.##";O1(I);O2(I);O3(I);O4(I)
  144. 1400  LOCATE 23,1:COLOR 7,2:PRINT " Latest ten wks: ";:PRINT USING " ##.##";W1(I);W2(I);W3(I);W4(I);W5(I);W6(I);W7(I);W8(I);W9(I);WA(I);:PRINT" ":COLOR 7,0
  145. 1410  LOCATE 6,25:PRINT USING "Buy Com:    ####.##";28 + ((NUMSH(I)*BUY(I))*(0.8/100))
  146. 1420  LOCATE 7,25:PRINT USING "Sell Com:   ####.##";28 + ((NUMSH(I)*CURPR(I))*(0.8/100))
  147. 1430  LOCATE 7,50:PRINT USING "Net: #####.##";((CURPR(I)*NUMSH(I))-56 - ((NUMSH(I)*CURPR(I))*(0.8/100))-((NUMSH(I)*BUY(I))*(0.8/100)))-(BUY(I)*NUMSH(I))
  148. 1440  LOCATE 9,1
  149. 1450  PRINT USING "Chg today:   ##.##";CURPR(I)-O4(I)
  150. 1460  IF CURVOL(I) > V4(I) THEN COLOR 0,4
  151. 1470  PRINT USING "Vol today: #####00";CURVOL(I):COLOR 7,0
  152. 1480  LOCATE 9,25: PRINT USING "Chg this wk: ###.##";CURPR(I)-WA(I)
  153. 1490  LOCATE 10,25: PRINT USING "% this week: ###.##";((CURPR(I)/WA(I))*100)-100
  154. 1500  LOCATE 12,1
  155. 1510  PRINT USING "PSR:         ##.##";CURPR(I)/SALESH(I)
  156. 1520  PRINT USING "PE:          ##.##";CURPR(I)/EPS(I)
  157. 1530  PRINT USING "P/BV:        ##.##";CURPR(I)/BVSH(I)
  158. 1540  PRINT USING "EPS          ##.##";EPS(I)
  159. 1550  IF DIVSH(I) < 0.01 THEN PRINT "Div/share:     NIL":GOTO 1570
  160. 1560  PRINT USING "Div/share:   ##.##";DIVSH(I)
  161. 1570  PRINT USING "Earn Yield:  ##.##%";(EPS(I)/CURPR(I))*100
  162. 1580  IF DIVSH(I) < 0.01 THEN PRINT "Div Yield:     NIL":GOTO 1600
  163. 1590  PRINT USING "Div Yield:   ##.##%";(DIVSH(I)/CURPR(I))*100
  164. 1600  LOCATE 12,25: PRINT USING "Sales/share: ###.##";SALESH(I)
  165. 1610  LOCATE ,25:PRINT USING "Book Val/sh:  ##.##";BVSH(I)
  166. 1620  LOCATE ,25:PRINT       "Timeliness:   ";TIMELY(I)
  167. 1630  LOCATE ,25:PRINT       "Safety:       ";SAFE(I)
  168. 1640  LOCATE ,25:PRINT USING "Year High:    ##.##";YEARHI(I)
  169. 1650  LOCATE ,25:PRINT USING "Year Low:     ##.##";YEARLO(I)
  170. 1660  MOVAVG(I) =  (W1(I)+W2(I)+W3(I)+W4(I)+W5(I)+W6(I)+W7(I)+W8(I)+W9(I)+WA(I))/10
  171. 1670  LOCATE ,25:PRINT USING "10 Wk Avg:    ##.##";MOVAVG(I)
  172. 1680  RO = 11.5/10.1: '======11.5=BzWk ROE 1200 co.|10.1=VLine PE 4/18/84 =======
  173. 1690  LOCATE 12,50: PRINT USING "ROE:         ###.##";(EPS(I)/BVSH(I))*100
  174. 1700  IF ((EPS(I)/BVSH(I))*100)/(CURPR(I)/EPS(I)) =< (RO * 0.75) THEN COLOR 3,0
  175. 1710  IF ((EPS(I)/BVSH(I))*100)/(CURPR(I)/EPS(I)) => (RO * 1.5) THEN COLOR 0,5
  176. 1720  LOCATE   ,50: PRINT USING "ROE/PE:      ###.##";((EPS(I)/BVSH(I))*100)/(CURPR(I)/EPS(I)):COLOR 7,0
  177. 1730  LOCATE   ,50: PRINT USING "MKT ROE/PE:  ###.##";RO
  178. 1740  PBV=((DIVSH(I)/CURPR(I))*100)+(((EPS(I)-DIVSH(I))/BVSH(I))*100)/(CURPR(I)/EPS(I)):IF PBV => 2 THEN COLOR 0,5
  179. 1750  IF PBV <  2 THEN COLOR 3,0
  180. 1760  LOCATE   ,50: PRINT USING "Buy Value:   ###.##";PBV:COLOR 7,0
  181. 1770  LOCATE   ,50: PRINT USING "5Yr Avg PE:  ###.##";PEAVG(I)
  182. 1780  XB = PEAVG(I)/10.12 : XZ = (CURPR(I)/EPS(I))/9.8:REM 10.12=5 YR DJ PE  9.8 = DJ PE 4/5/84
  183. 1790  IF XB =< 0 THEN LOCATE ,50:PRINT "Chg Rel PE:     NIL":GOTO 1830
  184. 1800  RELPE = ((XZ/XB)*100)-100:IF RELPE < 0 THEN COLOR 0,5
  185. 1810  IF RELPE => 0 THEN COLOR 3,0
  186. 1820  LOCATE   ,50: PRINT USING "Chg Rel PE:  ###.##";RELPE;:COLOR 7,0:PRINT"%"
  187. 1830  LOCATE   ,50: PRINT USING "5Yr PE/DJ PE:###.##";XB
  188. 1840  LOCATE   ,50: PRINT USING "Cur PE/DJ PE:###.##";XZ
  189. 1850  PRINT:PRINT
  190. 1860  X$=INKEY$:IF X$="" THEN 1860
  191. 1870  IF X$ <> "t" AND X$ <> "T" THEN 1950
  192. 1880  IF X$ = "t" OR X$ = "T" THEN LOCATE 25,1:PRINT "Last Next Select Quit         ":FOR S = 1 TO NU:LOCATE 25,53:COLOR 0,5:PRINT USING " ## ";S;:PRINT USING "\    \";TIK$(S):COLOR 7,0
  193. 1890  TK$=INKEY$:IF TK$="" THEN 1890
  194. 1900  IF TK$ = "s" OR Q$="S" THEN I=S-1:GOTO 2020
  195. 1901  IF TK$ = "q" OR Q$="Q" THEN LOCATE 25,1:PRINT"Number Last Next Tickers Quit":GOTO 1860
  196. 1910  IF TK$ <> "l" AND S = NU THEN S = 0:GOTO 1940
  197. 1920  IF TK$ = "l" AND S = 1 THEN S = NU - 1:GOTO 1940
  198. 1930  IF TK$ = "l" THEN S = S - 2
  199. 1940  NEXT S
  200. 1950  IF X$ = "q" OR X$ = "Q" THEN 2060
  201. 1960  IF X$ = "l" AND I = 1 THEN I = NU - 1:GOTO 2020
  202. 1970  IF Q$ = "+" AND I = NU THEN I = 0:GOTO 2960
  203. 1980  IF X$ = "l" THEN I = I-2:GOTO 2020
  204. 1990  IF X$ = "a" OR X$ = "A" THEN GOSUB 3390:GOTO 1860
  205. 2000  IF VAL(X$) > 0 AND VAL(X$) <=9 THEN Y$=INKEY$:GOTO 2030
  206. 2010  IF I= NU THEN I = 0
  207. 2020  NEXT I
  208. 2030  IF Y$="" THEN 2000
  209. 2040  I = VAL(X$+Y$)-1:IF I+1 > NU THEN 1860
  210. 2050  GOTO 2020
  211. 2060  GOTO 490
  212. 2070  '===================== SOMETHING WICKED ==============================
  213. 2080  GOSUB 4080
  214. 2090  PRINT "Last Next Select Display    Of";NU;"Stocks."
  215. 2100  M=0
  216. 2110  FOR I = 1 TO NU:LOCATE 25,45:COLOR 0,5:PRINT USING " ## ";I;:PRINT USING "\   \";TIK$(I):COLOR 7,0
  217. 2120  Q$=INKEY$:IF Q$="" THEN 2120
  218. 2130  IF Q$ = "d" OR Q$="D" THEN 490
  219. 2140  IF Q$ = "s" OR Q$="S" THEN M=M+1:COUNT1(M)=I:LOCATE 2+M,1:COLOR 0,2:PRINT USING "\   \";TIK$(I):COLOR 7,0:IF M = 14 THEN 490
  220. 2150  IF Q$ <> "l" AND I = NU THEN I = 0:GOTO 2180
  221. 2160  IF Q$ = "l" AND I = 1 THEN I = NU - 1:GOTO 2180
  222. 2170  IF Q$ = "l" THEN I = I - 2
  223. 2180  NEXT I
  224. 2190  GOTO 490
  225. 2200  '=========================== BPORT DISPLAY ==============================
  226. 2210  CLS:LOCATE 1,1:PRINT "Tick  T  Buy   Cur   Chg    V00 PSR  PE P/BV EYld DYld %Ch Com  Brk=        Net "
  227. 2220                 PRINT "-----|-|-----|-----|-----|-----|----|--|----|----|----|---|---|-----|-----|-----":LOCATE 25,45:PRINT "Portfolio: ";LEFT$(RK$,5)+" "+DT$
  228. 2230  FOR K = 1 TO NU:PO = K+2:TA=0:TB=0
  229. 2240  IF K > 20 AND K <= 40 THEN PO = K - 18
  230. 2250  IF K >= 41 AND K < 60 THEN PO = K - 38
  231. 2260  MOVAVG(K) =  (W1(K)+W2(K)+W3(K)+W4(K)+W5(K)+W6(K)+W7(K)+W8(K)+W9(K)+WA(K))/10
  232. 2270  LOCATE PO,1:PRINT TIK$(K)
  233. 2280  IF MOVAVG(K) < CURPR(K) THEN COLOR 0,5
  234. 2290  LOCATE PO,7 :PRINT USING "#";TIMELY(K):COLOR 7,0
  235. 2300  LOCATE PO,9:PRINT USING "##.##";BUY(K)
  236. 2310  IF CURPR(K) > O4(K) THEN COLOR 14,0
  237. 2320  IF CURPR(K) < O4(K) THEN COLOR 3,0
  238. 2330  IF CURPR(K) > (O4(K)*1.04) THEN COLOR 0,5
  239. 2340  IF CURPR(K) < (O4(K)*0.96) THEN COLOR 0,1
  240. 2350  LOCATE PO,15:PRINT USING "##.##";CURPR(K)
  241. 2360  LOCATE PO,21:PRINT USING "##.##";CURPR(K)-O4(K):COLOR 7,0
  242. 2370  VOLAVG(K)=(V1(K)+V2(K)+V3(K)+V4(K)+CURVOL(K))/5
  243. 2380  IF CURVOL(K) > VOLAVG(K) THEN COLOR 14,0
  244. 2390  IF CURVOL(K) > VOLAVG(K)*1.75 THEN COLOR 0,5
  245. 2400  IF CURVOL(K) < VOLAVG(K) THEN COLOR 3,0
  246. 2410  IF CURVOL(K) < VOLAVG(K) *0.5 THEN COLOR 0,1
  247. 2420  LOCATE PO,27:PRINT USING "#####";CURVOL(K):COLOR 7,0
  248. 2425  IF CURPR(K)/SALESH(K) < 1 THEN COLOR 0,5
  249. 2426  IF CURPR(K)/SALESH(K) > 1 THEN COLOR 3,0
  250. 2430  LOCATE PO,33:PRINT USING "#.##";CURPR(K)/SALESH(K):COLOR 7,0
  251. 2440  PERATIO(K)=CURPR(K)/EPS(K):IF PERATIO(K) > 99 THEN PERATIO(K)=99
  252. 2450  LOCATE PO,37:PRINT USING " ##";PERATIO(K)
  253. 2460  IF CURPR(K)/BVSH(K) < 1 THEN COLOR 0,5
  254. 2470  IF CURPR(K)/BVSH(K) > 1 THEN COLOR 3,0
  255. 2480  LOCATE PO,41:PRINT USING "##.#";CURPR(K)/BVSH(K):COLOR 7,0
  256. 2490  LOCATE PO,45:PRINT USING " ##.#";(EPS(K)/CURPR(K))*100
  257. 2500  BUYCOM(K) = 28 +  ((NUMSH(K)*BUY(K))*(0.8/100))
  258. 2510  SELCOM(K) = 28 +  ((NUMSH(K)*CURPR(K))*(0.8/100))
  259. 2520  TOTCOM(K)=BUYCOM(K)+SELCOM(K)
  260. 2530  BRKEVEN(K)=CURPR(K)+(TOTCOM(K)/NUMSH(K))
  261. 2540  IF DIVSH(K) <= 0.01 THEN LOCATE PO,50:PRINT "  NIL":GOTO 2560
  262. 2550  LOCATE PO,50 :PRINT USING " ##.#";(DIVSH(K)/CURPR(K))*100
  263. 2560  PCTCHG(K)=INT((CURPR(K)/BUY(K))*100)-100
  264. 2570  IF PCTCHG(K) <= -15 THEN COLOR 0,2
  265. 2580  IF PCTCHG(K) >=  15 THEN COLOR 0,5
  266. 2590  LOCATE PO,56:PRINT USING "###";PCTCHG(K):COLOR 7,0
  267. 2600  LOCATE PO,59:PRINT USING " ###";TOTCOM(K)
  268. 2610  LOCATE PO,63 :PRINT USING " ##.##";BRKEVEN(K)
  269. 2620  IF CURPR(K) > BUY(K)+(TOTCOM(K)/NUMSH(K))  THEN COLOR 14,0
  270. 2630  IF CURPR(K) >(BUY(K)+(TOTCOM(K)/NUMSH(K)))*1.15 THEN COLOR 0,5
  271. 2640  IF CURPR(K) < (BUY(K)+(TOTCOM(K)/NUMSH(K)))  THEN COLOR 3,0
  272. 2650  IF CURPR(K) < (BUY(K)+(TOTCOM(K)/NUMSH(K)))*0.85 THEN COLOR 0,2
  273. 2660  LOCATE PO,76:PRINT USING "#####";(CURPR(K)*NUMSH(K))-(BUY(K)*NUMSH(K))-TOTCOM(K):COLOR 7,0
  274. 2670  TA = CURPR(K)*NUMSH(K):TT = TA + TT: TB = BUY(K)*NUMSH(K):TC = TB + TC:TA=0:TB=0:MC=MC+ TOTCOM(K)
  275. 2680  IF M <> 0 THEN RETURN
  276. 2690  IF K = 20 THEN GOSUB 2740
  277. 2700  IF K = 40 THEN GOSUB 2740
  278. 2710  NEXT K
  279. 2720  TT=0:TC=0:MC=0
  280. 2730  GOTO 600
  281. 2740  TT=0:TC=0:MC=0
  282. 2750  LOCATE 25,1:PRINT"Rtn/Q:  ";:COLOR 14,0:PRINT "Up ":LOCATE 25,12:COLOR 0,5:PRINT"4%P":LOCATE 25,16:PRINT"75%V":LOCATE 25,21:PRINT"15%N";:COLOR 3,0:PRINT" Down ";:COLOR 0,1:PRINT"4%P":LOCATE 25,35:COLOR 0,1:PRINT"50%V":LOCATE 25,40:PRINT"15%N"
  283. 2760  COLOR 7,0
  284. 2770  Q$=INKEY$:IF Q$="" THEN 2770
  285. 2780  IF Q$ = "q" OR Q$ = "Q" THEN 600
  286. 2790  CLS:LOCATE 1,1:PRINT "Tick  T  Buy   Cur   Chg    V00 PSR  PE P/BV EYld DYld %Ch Com  Brk=        Net "
  287. 2800                 PRINT "-----|-|-----|-----|-----|-----|----|--|----|----|----|---|---|-----|-----|-----":LOCATE 25,45:PRINT "Portfolio: ";LEFT$(RK$,5)+" "+DT$
  288. 2810  RETURN
  289. 2820  '======================== CHANGE THE FUNDAMENTALS ====================
  290. 2830  'CLS:LOCATE 25,1
  291. 2840  '
  292. 2850  '
  293. 2860  '
  294. 2870  GOSUB 4080:PRINT "Last Next Select Add Quit   At stock, RTN=No Chg. ";NU;" Stocks.   "
  295. 2880  FOR I = 1 TO NU:LOCATE 25,67:COLOR 0,5:PRINT USING " ## ";I;:PRINT USING "\    \";TIK$(I):COLOR 7,0
  296. 2890  Q$=INKEY$:IF Q$="" THEN 2890
  297. 2900  IF Q$ = "q" OR Q$="Q" THEN 490
  298. 2910  IF Q$ = "s" OR Q$="S" THEN 2970
  299. 2920  IF Q$ = "a" OR Q$="A" THEN I=NU+1:NU=NU+1:GOTO 3140
  300. 2930  IF Q$ <> "l"  AND I = NU THEN I = 0:GOTO 2960
  301. 2940  IF Q$ = "l"  AND I = 1 THEN I = NU - 1:GOTO 2960
  302. 2950  IF Q$ = "l" THEN I = I - 2
  303. 2960  NEXT I
  304. 2970  IF I = 0 THEN 3300
  305. 2980  IF I > NU THEN 2880
  306. 2990  CLS:LOCATE 1,1
  307. 3000  PRINT"Ticker:      ";TIK$(I)
  308. 3010  PRINT"Ex & Name:   ";NAM$(I)
  309. 3020  PRINT"Buy Price:   ";BUY(I)
  310. 3030  PRINT"Cur Price:   ";CURPR(I)
  311. 3040  PRINT"Num shares:  ";NUMSH(I)
  312. 3050  PRINT"5 Yr Avg PE: ";PEAVG(I)
  313. 3060  PRINT"Sales/share: ";SALESH(I)
  314. 3070  PRINT"Earn/share:  ";EPS(I)
  315. 3080  PRINT"Book Val/sh: ";BVSH(I)
  316. 3090  PRINT"Dividend/Sh: ";DIVSH(I)
  317. 3100  PRINT"Timeliness:  ";TIMELY(I)
  318. 3110  PRINT"Safety:      ";SAFE(I)
  319. 3120  PRINT"Year High:   ";YEARHI(I)
  320. 3130  PRINT"Year Low:    ";YEARLO(I)
  321. 3140  LOCATE 1,40:INPUT "Ticker: ",N1$:IF N1$ <> "" THEN TIK$(I)=N1$
  322. 3150  LOCATE ,40:INPUT "Ex/Name:",N2$:IF N2$ <> "" THEN NAM$(I)=N2$
  323. 3160  LOCATE ,40:INPUT "Buy Pr :",N1: IF N1 <> 0 THEN BUY(I) = N1
  324. 3170  LOCATE ,40:INPUT "Cur Pr :",LN: IF LN <> 0 THEN CURPR(I) = LN
  325. 3180  LOCATE ,40:INPUT "Num Sh :",N0: IF N0 <> 0 THEN NUMSH(I) = N0
  326. 3190  LOCATE ,40:INPUT "5 Yr PE:",OP: IF OP <> 0 THEN PEAVG(I) = OP
  327. 3200  LOCATE ,40:INPUT "Sale/Sh:",N2: IF N2 <> 0 THEN SALESH(I) = N2
  328. 3210  LOCATE ,40:INPUT "Earn/Sh:",N3: IF N3 <> 0 THEN EPS(I) = N3
  329. 3220  LOCATE ,40:INPUT "BV/Sh:  ",N4: IF N4 <> 0 THEN BVSH(I) = N4
  330. 3230  LOCATE ,40:INPUT "Div/Sh: ",N9: IF N9 <> 0 THEN DIVSH(I) = N9
  331. 3240  LOCATE ,40:INPUT "Timely: ",N5: IF N5 <> 0 THEN TIMELY(I) = N5
  332. 3250  LOCATE ,40:INPUT "Safety: ",N6: IF N6 <> 0 THEN SAFE(I) = N6
  333. 3260  LOCATE ,40:INPUT "Year Hi:",N7: IF N7 <> 0 THEN YEARHI(I) = N7
  334. 3270  LOCATE ,40:INPUT "Year Lo:",N8:IF N8 <> 0 THEN YEARLO(I) = N8
  335. 3280  LOCATE ,40:INPUT "10 wks Y/N:",Q$:IF Q$ = "y" OR Q$ = "Y" THEN 3310
  336. 3290  GOTO 2870
  337. 3300  RETURN
  338. 3310  FOR WW = 1 TO 10: LOCATE 23,28:PRINT"      ":LOCATE 23,1:INPUT "Weekly close, recent last: ",M0(WW):NEXT WW
  339. 3320  W1(I)=M0(1):W2(I)=M0(2):W3(I)=M0(3):W4(I)=M0(4):W5(I)=M0(5):W6(I)=M0(6):W7(LIST 3230-
  340. 3330  LOCATE 23,1:PRINT SPACE$(40)
  341. 3340  GOTO 2870
  342. 3350  '======================  RESET FUNCTION KEYS  ==============================
  343. 3360  KEY 1,"LIST "+CHR$(13):KEY 5,"EDIT ":KEY 6,"CLS"+CHR$(13):KEY 7,"List "
  344. 3370  KEY 2,"RUN"+CHR$(13):KEY 3,"LOAD "+CHR$(34):KEY 4,"SAVE "+CHR$(34):KEY 8,"list 480 - "+CHR$(13): KEY 9,"list 2140 -"+CHR$(13):KEY 10,"list 4000 -"+CHR$(13)
  345. 3380  RETURN
  346. 3390  '====================== AVERAGE PE RATIO ALL STOCKS =================
  347. 3400  AV=0:AV1=0:FOR B = 1 TO NU:AV = CURPR(B)/EPS(B):IF AV < 1 OR AV > 200 THEN AV = 10:GOTO 3420
  348. 3410  AV1 = AV + AV1:AV = 0
  349. 3420  NEXT B:AVGPE = AV1/NU
  350. 3430  LOCATE 23,1:PRINT USING "Avg PE:      ##.##";AVGPE
  351. 3440  RETURN
  352. 3450  '======================= PRINT THE PORTFOLIO =======================
  353. 3460  LPRINT "Portfolio, date saved: ";RK$;" ";DT$;"    Printout date: ";DATE$:LPRINT
  354. 3470  LPRINT "Tick  T  Buy   Cur   Chg    V00 PSR  PE B/BV EYld DYld %Ch Com  Brk=  Net   TK  "
  355. 3480  LPRINT "-----|-|-----|-----|-----|-----|----|--|----|----|----|---|---|-----|-----|-----"
  356. 3490  FOR K = 1 TO NU:PO = K+2:TA=0:TB=0
  357. 3500  MOVAVG(K) =  (W1(K)+W2(K)+W3(K)+W4(K)+W5(K)+W6(K)+W7(K)+W8(K)+W9(K)+WA(K))/10
  358. 3510  LPRINT TIK$(K) TAB(6);
  359. 3520  IF MOVAVG(K) < CURPR(K) THEN LPRINT"DEFDBL";
  360. 3530  IF MOVAVG(K) >= CURPR(K) THEN LPRINT"SWAP";
  361. 3540  LPRINT USING "#";TIMELY(K);
  362. 3550  LPRINT USING " ##.##";BUY(K);
  363. 3560  LPRINT USING " ##.##";CURPR(K);
  364. 3570  IF CURPR(K) >= (O4(K)*1.04) THEN LPRINT "DEFDBL";
  365. 3580  IF CURPR(K) <= (O4(K)*0.96) THEN LPRINT "SWAP";
  366. 3590  IF CURPR(K) > (O4(K)*0.96) AND CURPR(K) < (O4(K)*1.04) THEN LPRINT " ";
  367. 3600  LPRINT USING "##.##";CURPR(K)-O4(K);
  368. 3610  VOLAVG(K)=(V1(K)+V2(K)+V3(K)+V4(K)+CURVOL(K))/5
  369. 3620  LPRINT USING "######";CURVOL(K);
  370. 3630  IF CURVOL(K) >= VOLAVG(K)*1.75 THEN LPRINT "DEFDBL";
  371. 3640  IF CURVOL(K) <= VOLAVG(K) *0.5 THEN LPRINT "SWAP";
  372. 3650  IF CURVOL(K) > VOLAVG(K) *0.5 AND CURVOL(K) < VOLAVG(K)*1.75 THEN LPRINT " ";
  373. 3660  LPRINT USING "#.##";CURPR(K)/SALESH(K);
  374. 3665  IF CURPR(K)/EPS(K) > 99 THEN LPRINT " 99";:GOTO 3680
  375. 3670  LPRINT USING " ##";CURPR(K)/EPS(K);
  376. 3680  LPRINT USING " ##.#";CURPR(K)/BVSH(K);
  377. 3690  LPRINT USING " ##.#";(EPS(K)/CURPR(K))*100;
  378. 3700  BUYCOM(K) = 28 +  ((NUMSH(K)*BUY(K))*(0.8/100))
  379. 3710  SELCOM(K) = 28 +  ((NUMSH(K)*CURPR(K))*(0.8/100))
  380. 3720  TOTCOM(K)=BUYCOM(K)+SELCOM(K)
  381. 3730  BRKEVEN(K)=CURPR(K)+(TOTCOM(K)/NUMSH(K))
  382. 3740  IF DIVSH(K) <= 0.01 THEN LPRINT "  NIL";:GOTO 3760
  383. 3750  LPRINT USING " ##.#";(DIVSH(K)/CURPR(K))*100;
  384. 3760  LPRINT USING " ###";INT((CURPR(K)/BUY(K))*100)-100;
  385. 3770  LPRINT USING " ###";TOTCOM(K);
  386. 3780  LPRINT USING " ##.##";BRKEVEN(K);
  387. 3790  LPRINT USING "#####";(CURPR(K)*NUMSH(K))-(BUY(K)*NUMSH(K))-TOTCOM(K);
  388. 3800  IF CURPR(K) <= (BUY(K)+(TOTCOM(K)/NUMSH(K)))*0.85 THEN LPRINT "SWAP";:GOTO 3821
  389. 3810  IF CURPR(K) >= (BUY(K)+(TOTCOM(K)/NUMSH(K)))*1.15 THEN LPRINT "DEFDBL";:GOTO 3821
  390. 3820  LPRINT " ";
  391. 3821  RO = 11.5/10.1: '======11.5=BzWk ROE 1200 co.|10.1=VLine PE 4/18/84 =======
  392. 3822  IF ((EPS(K)/BVSH(K))*100)/(CURPR(K)/EPS(K)) =< (RO * 0.75) THEN LPRINT " SELL":GOTO 3830
  393. 3824  IF ((EPS(K)/BVSH(K))*100)/(CURPR(K)/EPS(K)) => (RO * 1.5) THEN LPRINT " BUY":GOTO 3830
  394. 3826  LPRINT " "
  395. 3830  NEXT K: RETURN
  396. 3840  TA = CURPR(K)*NUMSH(K):TT = TA + TT: TB = BUY(K)*NUMSH(K):TC = TB + TC:TA=0:TB=0:MC=MC+ TOTCOM(K)
  397. 3850  IF M <> 0 THEN RETURN
  398. 3860  IF K = 20 THEN GOSUB 3910
  399. 3870  IF K = 40 THEN GOSUB 3910
  400. 3880  NEXT K
  401. 3890  TT=0:TC=0:MC=0
  402. 3900  GOTO 600
  403. 3910  TT=0:TC=0:MC=0
  404. 3920  LOCATE 25,1:PRINT "RTN or Quit: ":Q$=INKEY$:IF Q$="" THEN 3920
  405. 3930  IF Q$ = "q" OR Q$ = "Q" THEN 600
  406. 3940  CLS:LOCATE 1,1:PRINT "Tick  T  Buy   Cur   Chg    V00 PSR  PE B/BV EYld DYld %Ch Com  Brk=        Net "
  407. 3950                 PRINT "-----|-|-----|-----|-----|-----|----|--|----|----|----|---|---|-----------|-----":LOCATE 25,38:PRINT "Portfolio: ";RK$;"   ";DT$
  408. 3960  RETURN
  409. 3970  '======================= MARKET AVERAGES =======================
  410. 3972  GOSUB 4080:LOCATE 25,1:PRINT "NewData View Quit"
  411. 3973  Q$=INKEY$:IF Q$="" THEN 3973
  412. 3974  IF Q$ =  "q" OR Q$ = "Q" THEN RETURN
  413. 3975  IF Q$ <> "n" AND Q$ <> "N" THEN 5000
  414. 3980  GOSUB 7000
  415. 3990  GOSUB 4080
  416. 4000  LOCATE 25,1:INPUT "Date (MTH00): ",HISTDAT$(10):GOSUB 4080
  417. 4005  LOCATE 25,1:INPUT "Dow close:  ",DOW(10):GOSUB 4080
  418. 4010  LOCATE 25,1:INPUT "NYSE vol (mils):   ",VOL(10):GOSUB 4080
  419. 4020  LOCATE 25,1:INPUT "Advances:   ",UPS(10):GOSUB 4080
  420. 4030  LOCATE 25,1:INPUT "Declines:   ",DNS(10):GOSUB 4080
  421. 4040  LOCATE 25,1:INPUT "New highs:  ",HI(10):GOSUB 4080
  422. 4050  LOCATE 25,1:INPUT "New lows:   ",LO(10):GOSUB 4080
  423. 4060  LOCATE 25,1:INPUT "Blocks:     ",BLK(10):GOSUB 4080
  424. 4070  GOTO 5000:'RETURN
  425. 4080  LOCATE 25,1:PRINT SPACE$(80):LOCATE 25,1:RETURN
  426. 5000  '======================= MARKET PAGE ==============================
  427. 5005  CLS:PRINT:PRINT "DATE:    ";:FOR I = 1 TO 10: PRINT "  ";HISTDAT$(I);:NEXT I:PRINT
  428. 5010  PRINT: PRINT"CLOSE:   ";:FOR I = 1 TO 10: PRINT USING " ####.#";DOW(I);:NEXT I
  429. 5020  PRINT:PRINT"VOLUME:  ";:FOR I = 1 TO 10: PRINT USING " ######";VOL(I);:NEXT I
  430. 5030  PRINT:PRINT"ADVANCES:";:FOR I = 1 TO 10: PRINT USING " ######";UPS(I);:NEXT I
  431. 5040  PRINT:PRINT"DECLINES:";:FOR I = 1 TO 10: PRINT USING " ######";DNS(I);:NEXT I
  432. 5060  PRINT:PRINT"NEW HIGH:";:FOR I = 1 TO 10: PRINT USING " ######";HI(I);:NEXT I
  433. 5070  PRINT:PRINT"NEW LOW: ";:FOR I = 1 TO 10: PRINT USING " ######";LO(I);:NEXT I
  434. 5080  PRINT:PRINT"BLOCKS:  ";:FOR I = 1 TO 10: PRINT USING " ######";BLK(I);:NEXT I
  435. 6000  RETURN
  436. 6009  END
  437. 7000  FOR I = 1 TO 9:HISTDAT$(I)=HISTDAT$(I+1):NEXT I
  438. 7005  FOR I = 1 TO 9:DOW(I)=DOW(I+1):NEXT I
  439. 7010  FOR I = 1 TO 9:VOL(I)=VOL(I+1):NEXT I
  440. 7020  FOR I = 1 TO 9:UPS(I)=UPS(I+1):NEXT I
  441. 7030  FOR I = 1 TO 9:DNS(I)=DNS(I+1):NEXT I
  442. 7040  FOR I = 1 TO 9:HI(I)=HI(I+1):NEXT I
  443. 7050  FOR I = 1 TO 9:LO(I)=LO(I+1):NEXT I
  444. 7060  FOR I = 1 TO 9:BLK(I)=BLK(I+1):NEXT I
  445. 7100  RETURN
  446.